﻿using FluentMigrator;

namespace Infrastructure.Persistence.Migrations.UserProfiles;

[Migration(202511081554)]
public class RebuildTable : ForwardOnlyMigration
{
    public override void Up()
    {
        // 1️⃣ 删除旧表（如果存在）
        if (Schema.Schema(SchemaNames.Identity).Table("UserPreferences").Exists())
        {
            Delete.Table("UserPreferences").InSchema(SchemaNames.Identity);
        }

        // 2️⃣ 重新创建表
        Create.Table("UserPreferences")
            .InSchema(SchemaNames.Identity)
            .WithColumn("TenantId").AsString(100).Nullable()
                .WithColumnDescription("租户标识")
            .WithColumn("UserProfileId").AsGuid().NotNullable()
                .WithColumnDescription("所属 UserProfile 的 Id，用于逻辑关联")
            .WithColumn("Key").AsString(100).NotNullable()
                .WithColumnDescription("偏好项的唯一标识键，例如 '系统消息'")
            .WithColumn("Value").AsString(int.MaxValue).NotNullable()
                .WithColumnDescription("偏好值，JSON 序列化存储")
            .WithColumn("ValueType").AsString(200).Nullable()
                .WithColumnDescription("序列化值的类型信息，用于调试或反序列化")
            .WithColumn("Description").AsString(500).Nullable()
                .WithColumnDescription("偏好项的说明或描述");

        // 3️⃣ 设置复合主键
        Create.PrimaryKey("PK_UserPreferences")
            .OnTable("UserPreferences")
            .WithSchema(SchemaNames.Identity)
            .Columns("UserProfileId", "Key");
    }
}
